package com.huawei.classroom.student.h10;
import java.util.Map;
import java.util.TreeMap;
import java.util.List;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Collections;
/**
 * 把你作业的代码写到这个类里面
 * 不可以修改类的名字、包名、和固有的几个方法名以及方法的可见性
 * 可以增加其他方法、属性、类
 * 可以引用jdk的类
 * 不要引用jdk1.8以外第三方的包
 * 
 * @author cjy
 *
 */
public class Home10 {
	public Home10() {
	} 
	/**
	 * 将一个字符串中字符按出现频率的高到低排序返回，如果两个字符出现的频率一样，则将最先出现的字符排在前面
	 * 例如：orderChar(“abcdefg”)返回 “abcdefg” 
	 * orderChar(“abcdefgg”)返回 “gabcdef”
	 * orderChar(“abcdefgge”)返回 “egabcdf”
	 * orderChar(“天津大学软件学院”)返回 “学天津大软件院”
	 * @param content
	 * @return
	 */
	public String orderChar(String content) {
		if(content.length() == 0)
			return content.toString();
		
		Map<Character,Integer> map = new TreeMap<Character,Integer>();
		
		for(int i=0; i<content.length(); i++) {
			map.put(content.charAt(i), (map.get(content.charAt(i)) == null ? 1 : map.get(content.charAt(i))+1));
		}
		
		List<Map.Entry<Character,Integer>> list = new ArrayList<Map.Entry<Character,Integer>>(map.entrySet());
		Collections.sort(list, new Comparator<Map.Entry<Character,Integer>>() {
			@Override
			public int compare(Map.Entry<Character,Integer> a1, Map.Entry<Character,Integer> a2) {
				return a2.getValue() - a1.getValue();
			}
		});
		StringBuffer  ss = new StringBuffer();
		for(Map.Entry<Character,Integer> t : list) {
			ss.append(t.getKey());
			//System.out.println(t.getValue());
		}
		//System.out.println(ss);
		return ss.toString();
	}
	
}
